package common;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import java.util.Map;


public interface IUI extends Remote { 
	
	public void clearScreen() throws RemoteException;
    
	void setTurnInfo(Board board,Player player) throws RemoteException;
	
	void setTurnInfo(Player player) throws RemoteException;
	
	void setBeginningOfTurn(boolean beginningOfTurn) throws RemoteException;
	
	public boolean getEndGame() throws RemoteException;
    
    void printBoard() throws RemoteException;
    
    void printTextFile(String FileName) throws RemoteException;

    void printInfo() throws RemoteException;
    
    Coordinate printPickTileDialog() throws RemoteException;
    
    int[] printStocksToBuyDialog(Company[] companies) throws RemoteException;
    
    void printError(int errorIndex) throws RemoteException;
    
    void printMessage(String msg) throws RemoteException;
    
    void printMessage(int msg,int ...args) throws RemoteException;
    
    void setPlayersName(String[] playerNames) throws RemoteException;
    
  /*  void printSellCompanyDialog(Company soldCompany, Company buyingCompany, List<Player> topShareHolders, 
            List<Player> secondShareHolders, int prizeMoney, int secondprizeMoney, Player[] players);*/
    
    int printSellCompanySell(Company soldCompany) throws RemoteException;
    
    int printSellCompanyChange(Company soldCompany, Company buyingCompany) throws RemoteException;
    
    void printEndGameResults(Map<Integer,List<Player>> finalStandings) throws RemoteException;
    
    enumCompany printChooseCompanyDialog(Company[] companies) throws RemoteException;
    
    void printSortBetweenSameSizeCompanies(List<Company> sameSizedCompanies, int size) throws RemoteException;
   
    void printHoF(Map<Integer,List<String>> hof) throws RemoteException;
    
    String getPlayerName() throws RemoteException;
    
    String getPlayerName(int i) throws RemoteException;;

	int getNumberOfPlayers() throws RemoteException;

	int getUserSetupDecision(boolean guest) throws RemoteException;
	
	public int getUserLoginDecision() throws RemoteException;
	
	public Profile getRegistrationDetails() throws RemoteException;
	
	public String[] getLoginDetails(int tryNum) throws RemoteException;
	
	public int getUserGameTypeDecision() throws RemoteException;
    
	public boolean closeExportedObject() throws RemoteException;
	
	public boolean getOptionMade() throws RemoteException;
	
	public void resetOptions() throws RemoteException;
	
	public void printHistory(History history) throws RemoteException;
	
	public int getUserRoomDecision(int N) throws RemoteException;
	
	public int getUserProfileDecision() throws RemoteException;
	
	public String changePasswordDialog(String oldPassword) throws RemoteException;
	
	public String changeEmailDialog() throws RemoteException;
	
	public int getHostAddressDecision() throws RemoteException;;
	
	public int getPortDecision() throws RemoteException;;
    
    // Console Version:
	
	public void setFirstTurn() throws RemoteException;
	
	public void setUndone(boolean unDone) throws RemoteException;
	
	public boolean getLoadGame() throws RemoteException;
	
	public boolean getSaveGame() throws RemoteException;

	public boolean getUndoGame() throws RemoteException;

	public boolean getRedoGame() throws RemoteException;
    
    String getLoadFileName() throws RemoteException;
        
    String getSaveFileName() throws RemoteException;
        
    boolean getYesNoQuestionAnswer() throws RemoteException;
    
	// public void pickTileDialogText(int tilesPerPlayer);
    
    // int[] getUserGameDefinitions(); 
    
}
